Testing an electronic device, such as an integrated circuit (IC), for proper operation is an integral part of device manufacturing. Conventional testing processes usually involve coupling a programmatic interface to test at a serial port of the device, inputting serial bit test streams into the device via the interface and monitoring a serial bit stream output from the device in response to the serial bit test stream. In some processes, the testing involves transmitting a write command that writes commands to the device followed by one or more read commands to verify the device's functionality.
Because the responses to the serial bit test stream are themselves a serial bit stream, matching the response data from the device (e.g., data responsive to the read command) with its corresponding test input (e.g., the write command) is often difficult and confusing; in many cases, the data output from the device does not correspond to the most recent test input and is instead a response to a previous test input. Attempts to circumvent this problem include preparing dummy test commands to simplify test program flow. For example, programmers may initiate a test command, place the test command results onto a stack, then initiate a subsequent command, such as a “check results” command, to return to the stack to do the actual comparison and read the test command results. Although adding dummy test commands does simplify tracking of the test commands and their corresponding results, any operation using this method requires at least two commands, increasing the number of test cycles for a given operation. The extra test vectors undesirably require extra testing cycles, and therefore extra time, to execute.
There is a desire for a device testing method that can maintain clear instruction flow without unduly increasing the number of test cycles.